iT邦幫忙

2023 iThome 鐵人賽

DAY 7
3
自我挑戰組

GPT伴我讀一些文件系列 第 7

Day7- GPT 陪我讀 W3C Trace Context Ch4

  • 分享至 

  • xImage
  •  

Day2 - GPT 陪我讀 W3C Trace Context Ch1
Day3- GPT 陪我讀 W3C Trace Context Ch2
Day4- GPT陪我讀 W3C Trace Context Ch3 追蹤上下文 HTTP 標頭格式 第一部份
Day5- GPT陪我讀 W3C Trace Context Ch3 追蹤上下文 HTTP 標頭格式 第二部份
Day6- GPT陪我讀 W3C Trace Context Ch3 追蹤上下文 HTTP 標頭格式 第三部份
Day7- GPT 陪我讀 W3C Trace Context Ch4
Day8- GPT 陪我讀 W3C Trace Context Ch5-6


Ch4 處理模型

前言

第 4 章描述了如何處理追踪上下文header的模型,包括在不同情境(如接收或未接收追踪parent header)下供應商的行為。描述中也涉及追踪上下文header可能的變動,以及在特定條件下可能的行動。


這部分不具規範性。

此節提供了一個逐步的示例,展示追踪供應商如何接收帶有追踪上下文header的請求,處理請求,然後可能將其轉發。當實施符合追踪上下文的追踪系統、中間件(如代理或消息總線)或雲服務時,此描述可作為參考。

4.1 與追踪上下文工作的處理模型

這一處理模型描述了修改和轉發追踪上下文header的供應商的行為。該模型的工作方式取決於是否接收到 traceparentheader。

4.2 未接收到追踪parent header

如果沒有接收到追踪parent header:

  1. 供應商檢查傳入的請求是否有 traceparentheader和 tracestateheader。
  2. 因未接收到 traceparentheader,供應商會創建一個新的 trace-idparent-id來代表當前的請求。
  3. 如果接收到 tracestateheader但未伴隨 traceparentheader,則它是無效的,且MUST被丟棄。
  4. 供應商SHOULD創建一個新的 tracestateheader並添加一個新的鍵 / 值對。
  5. 供應商設置對外的請求的 traceparentheader和 tracestateheader。

4.3 接收到 traceparent

當接收到 traceparentheader時:

  • 供應商檢查傳入的請求是否有 traceparenttracestateheader。
    解釋:供應商首先確認是否存在這兩個追踪相關的header資訊。

  • 因為 traceparentheader存在,供應商嘗試解析 traceparentheader的版本。
    解釋:traceparent header有不同的版本,供應商需要確定它能正確理解並處理該版本。

    • 如果版本不能被解析,供應商創建一個新的 traceparentheader並刪除 tracestate
    • 如果版本號比追踪器支持的版本高,供應商將使用在此規範中定義的格式(00)來解析 trace-idparent-id。供應商只會解析此規範版本支持的 trace-flags值,並忽略所有其他值。如果解析失敗,供應商將創建一個新的 traceparentparent並刪除 tracestate。供應商會在外發請求中將所有未解析/未知的 trace-flags設置為0。
      解釋:當 traceparent 的版本比供應商支持的版本高時,供應商會遵循一個標準格式進行解析。若解析過程中遇到問題,則會重新生成追踪資訊。
    • 如果供應商支持版本號,它會驗證 trace-idparent-id。如果 trace-idparent-idtrace-flags之一無效,供應商創建新的 traceparentheader並刪除 tracestate
      解釋:若 traceparent 的版本是供應商所支持的,則需要進一步確認追踪資訊的有效性。
  • 供應商MAY驗證 tracestateheader。如果 tracestateheader不能被解析,供應商可以選擇丟棄整個header。無效的 tracestate項目也可能被丟棄。
    解釋:供應商會確認 tracestate 的有效性,並在必要時進行調整或丟棄。

  • 對於每個外發請求,供應商執行以下步驟:

    • 供應商MUST修改 traceparentheader:
      • 更新 parent-id:屬性 parent-id的值MUST設置為代表當前操作的 ID。
      • 更新 sampledsampled的值反映了呼叫者的錄製行為。如果有可能記錄追踪數據,trace-flagssampled標誌可能設置為 1,否則設置為 0。設置此標誌並不保證追踪將被記錄,但增加了端到端記錄追踪的可能性。
    • 供應商MAY修改 tracestateheader:
      • 更新鍵值:任何鍵的值都可以被更新。修改過的鍵MUST移動到列表的開頭(左側)。
      • 添加新的鍵/值對:新的鍵值對MUST添加到列表的開頭(左側)。
      • 刪除鍵/值對:任何鍵 / 值對都可能被刪除。供應商SHOULD NOT刪除自己未生成的鍵。刪除任何鍵 / 值對可能在其他系統中破壞關聯性。
    • 供應商設置外發請求的 traceparenttracestateheader。
      解釋:在進行所有這些修改和檢查後,供應商會設置正確的追踪header資訊並發送請求。

總之,這部分詳細描述了當供應商接收到 traceparent header時,它如何處理和更新追踪資訊,以確保資訊的完整性和有效性。

4.4 替代處理

上述處理模型描述了處理追踪上下文header的完整步驟集。然而,有些情況下供應商可能只支持上述描述的部分步驟。代理或消息中間件MAY決定不修改 traceparentheaders,但會移除無效的header或向 tracestate添加額外信息。

總結

根據是否接收到追踪parent header,供應商的行為模式有所不同。沒有追踪parent header時,會創建新的追踪ID和父ID;有追踪parent header時,會嘗試解析和驗證其內容,然後根據結果執行不同的操作。對於每一個外發請求,供應商都會更新追踪parent header和追踪狀態頭。此外,還考慮了供應商可能只實施部分處理步驟的情況。


上一篇
Day6- GPT陪我讀 W3C Trace Context Ch3 追蹤上下文 HTTP 標頭格式 第三部份
下一篇
Day8- GPT 陪我讀 W3C Trace Context Ch5-6
系列文
GPT伴我讀一些文件31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
sponge1220
iT邦新手 4 級 ‧ 2023-09-08 00:02:59
  1. 河河河河河河
  2. 我們要使用 Amazon Cognito
  3. RDBMS 一定要設 FK

我要留言

立即登入留言